home *** CD-ROM | disk | FTP | other *** search
- package javax.swing.text.html;
-
- import java.awt.Polygon;
- import javax.swing.text.AttributeSet;
- import javax.swing.text.html.HTML.Attribute;
-
- class Map$PolygonRegionContainment extends Polygon implements Map.RegionContainment {
- float[] percentValues;
- int[] percentIndexs;
- int lastWidth;
- int lastHeight;
-
- public Map$PolygonRegionContainment(AttributeSet var1) {
- int[] var2 = Map.extractCoords(var1.getAttribute(Attribute.COORDS));
- if (var2 != null && var2.length != 0 && var2.length % 2 == 0) {
- int var3 = 0;
- this.lastWidth = this.lastHeight = -1;
-
- for(int var4 = var2.length - 1; var4 >= 0; --var4) {
- if (var2[var4] < 0) {
- ++var3;
- }
- }
-
- if (var3 > 0) {
- this.percentIndexs = new int[var3];
- this.percentValues = new float[var3];
- int var5 = var2.length - 1;
-
- for(int var6 = 0; var5 >= 0; --var5) {
- if (var2[var5] < 0) {
- this.percentValues[var6] = (float)var2[var5] / -100.0F;
- this.percentIndexs[var6] = var5;
- ++var6;
- }
- }
- } else {
- this.percentIndexs = null;
- this.percentValues = null;
- }
-
- super.npoints = var2.length / 2;
- super.xpoints = new int[super.npoints];
- super.ypoints = new int[super.npoints];
-
- for(int var7 = 0; var7 < super.npoints; ++var7) {
- super.xpoints[var7] = var2[var7 + var7];
- super.ypoints[var7] = var2[var7 + var7 + 1];
- }
-
- } else {
- throw new RuntimeException("Unable to parse polygon area");
- }
- }
-
- public boolean contains(int var1, int var2, int var3, int var4) {
- if (this.percentValues != null && (this.lastWidth != var3 || this.lastHeight != var4)) {
- super.bounds = null;
- this.lastWidth = var3;
- this.lastHeight = var4;
- float var5 = (float)var3;
- float var6 = (float)var4;
-
- for(int var7 = this.percentValues.length - 1; var7 >= 0; --var7) {
- if (this.percentIndexs[var7] % 2 == 0) {
- super.xpoints[this.percentIndexs[var7] / 2] = (int)(this.percentValues[var7] * var5);
- } else {
- super.ypoints[this.percentIndexs[var7] / 2] = (int)(this.percentValues[var7] * var6);
- }
- }
-
- return ((Polygon)this).contains(var1, var2);
- } else {
- return ((Polygon)this).contains(var1, var2);
- }
- }
- }
-